This invention relates, in general, to Flash Memory, and more particularly, to minimizing block erases of a Flash Memory.
In general, a Flash Memory is a non-volatile memory that does not require power such as a battery backup to retain its memory contents. A Flash Memory has several traits that differentiate it from other memory types. Three operations are commonly performed on a Flash Memory, a read operation, a write operation, and a block erase operation.
A read operation of a Flash Memory is performed at speeds similar to that of SRAMs (Static Random Access Memories). For example, Flash Memories currently being marketed have read access times of approximately 100 nanoseconds which is comparable to that of many SRAMs.
A write operation is performed by changing bits from a preset first logic level to a second logic level. For example, each byte of a Flash Memory is preset with logic one levels prior to a write operation. A write operation is performed by changing the logic one levels of predetermined bits of a selected byte to logic zero levels. A bit that has been changed from a logic one level to a logic zero level cannot be changed back to the logic one level by a write operation. A write operation of a Flash Memory is performed in approximately 10 microseconds which is significantly slower than a corresponding read operation.
FIG. 1 is an illustration of a Flash Memory 11 divided into blocks. In this example, Flash Memory 11 has 16 blocks, each block has 64 kilobytes of memory resulting in a total memory size of 1 megabyte. Each memory block is individually accessed without affecting the contents of the other memory blocks. A block erase operation on Flash Memory 11 writes a first logic level (for example a logic one level) to each bit of a memory block. Once a write operation is performed on a byte, a block erase (erasing all data in the block) is performed to rewrite new data to the same byte. A limit exists for the number of times a block erase operation is performed on a memory block before its integrity is compromised. A typical limit for block erases is approximately 100,000 times per block. Furthermore, a block erase operation takes a significant amount of time (approximately 1 second) so it is important to manage how the data is stored on each block to reduce the number of block erases required.
It would be of great benefit if a method for operating a Flash Memory could be provided that reduces the number of block erases required, more efficiently stores data without overlapping to other memory blocks, and on average decreases time required for block erases.